<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>3d魔方</title>
    <link rel="stylesheet" href="../common.css">
</head>
<style>
    :root{
        --bg: #000;
        --c1: #f5e7a1;
        --c2: skyblue;
        --c3: #fff;
        --c4: #97d497;
        --c5: #801a1a;
        --c6: orange;

        --w: 30px;
        --gap: 8px;
        --allW: calc(3 * var(--w) + 4 * var(--gap));
    }
    .container{
        width: var(--allW);
        height: var(--allW);
        /* 保留3d效果 */
        transform-style: preserve-3d;
         /* 三维透视效果 */
        perspective: 900px;
    }
    .container-box{
        position: relative;
        width: 100%;
        height: 100%;
        /* 保留3d效果 */
        transform-style: preserve-3d;
        /* transform: rotate(45deg) rotateY(45deg) rotateZ(45deg); */
        animation: rotate 5s infinite alternate;
    }
    @keyframes rotate {
        0%{
            transform: rotateZ(0deg) rotateX(0deg) rotateY(0deg);
        }
        15%{
            transform: rotateZ(45deg) rotateX(45deg) rotateY(45deg);
        }
        30%{
            transform: rotateZ(45deg) rotateX(90deg) rotateY(90deg);
        }
        45%{
            transform: rotateZ(45deg) rotateX(135deg) rotateY(135deg);
        }
        60%{
            transform: rotateZ(45deg) rotateX(90deg) rotateY(180deg);
        }
        75%{
            transform: rotateZ(45deg) rotateX(45deg) rotateY(225deg);
        }
        100%{
            transform: rotateZ(45deg) rotateX(0deg) rotateY(270deg);
        }
    }
    .cube-side{
        width: 100%;
        height: 100%;
        position: absolute;
        background: var(--bg);
        border-radius: 7px;
        padding: var(--gap);
        /* border: 1px solid red; */
        /* 背面不可见 */
        backface-visibility: hidden;
    }
    .cube-grid{
        width: var(--w);
        height: var(--w);
        border-radius: calc(var(--w) / 5);
        /* currentColor取决于当前color的色值 */
        background: currentColor;
        color: var(--c);
        box-shadow: calc(var(--w) + var(--gap)) 0 currentColor,
        calc(var(--w) * 2 + var(--gap) * 2) 0 currentColor,
        0 calc(var(--w) + var(--gap)) currentColor,
        calc(var(--w) + var(--gap)) calc(var(--w) + var(--gap)) currentColor,
        calc(var(--w) * 2 + var(--gap) * 2) calc(var(--w) + var(--gap)) currentColor,
        0 calc(var(--w) * 2 + var(--gap) * 2) currentColor,
        calc(var(--w) + var(--gap)) calc(var(--w) * 2 + var(--gap) * 2) currentColor,
        calc(var(--w) * 2 + var(--gap) * 2) calc(var(--w) * 2 + var(--gap) * 2) currentColor;
    }
    .side-back{
        transform: rotateX(-180deg) translateZ(calc(var(--allW) / 2));
    }
    .side-right{
        transform: rotateY(90deg) translateZ(calc(var(--allW) / 2));
    }
    .side-left{
        transform: rotateY(-90deg) translateZ(calc(var(--allW) / 2));
    }
    .side-top{
        transform: rotateX(90deg) translateZ(calc(var(--allW) / 2));
    }
    .side-bottom{
        transform: rotateX(-90deg) translateZ(calc(var(--allW) / 2));
    }
    .side-front{
        transform: translateZ(calc(var(--allW) / 2));
    }
</style>
<body>
    <div class="container">
        <div class="container-box">
            <div class="cube-side side-front">
                <div class="cube-grid" style="--c: var(--c1)"></div>
            </div>
            <div class="cube-side side-back">
                <div class="cube-grid" style="--c: var(--c2)"></div>
            </div>
            <div class="cube-side side-right">
                <div class="cube-grid" style="--c: var(--c3)"></div>
            </div>
            <div class="cube-side side-left">
                <div class="cube-grid" style="--c: var(--c4)"></div>
            </div>
            <div class="cube-side side-top">
                <div class="cube-grid" style="--c: var(--c5)"></div>
            </div>
            <div class="cube-side side-bottom">
                <div class="cube-grid" style="--c: var(--c6)"></div>
            </div>
        </div>
    </div>
</body>
</html>